sgdk
maths3D.h File Reference

3D math engine. More...

Go to the source code of this file.

Classes

struct  Context3D
struct  Transformation3D

Typedefs

typedef Vect3D_f16 Translation3D
typedef Vect3D_f16 Rotation3D

Functions

void M3D_reset ()
 Reset math 3D engine (reset matrices and transformation parameters mainly).
void M3D_setLightEnabled (u16 enabled)
 Enable or disable light transformation calculation.
u16 M3D_getLightEnabled ()
 Get light transformation calculation enabled flag.
void M3D_setViewport (u16 w, u16 h)
 Set viewport dimension.
void M3D_setCamDistance (fix16 value)
 Set camera scene distance.
void M3D_setLightXYZ (fix16 x, fix16 y, fix16 z)
 Set light direction vector.
void M3D_setLight (Vect3D_f16 *value)
 Set light direction vector.
void M3D_resetTransform (Transformation3D *t)
 Reset the specified rotation object.
void M3D_setTransform (Transformation3D *tr, Translation3D *t, Rotation3D *r)
 Set translation and rotation objects to the specified transformation object.
void M3D_setTranslation (Transformation3D *t, fix16 x, fix16 y, fix16 z)
 Set translation parameters to the specified transformation object.
void M3D_setRotation (Transformation3D *t, fix16 x, fix16 y, fix16 z)
 Set rotation parameters to the specified Transformation3D object.
Be careful, value is not given in radiant.
[-8..+8] range correspond to radian [-PI..+PI] range.
void M3D_combineTransform (Transformation3D *left, Transformation3D *right, Transformation3D *result)
 Combine the specified right and left Transformation3D objects and store result in result. result cannot be the same transformation object as left or right.
void M3D_combineTranslationLeft (Translation3D *left, Transformation3D *right, Transformation3D *result)
 Combine the specified left Translation3D and right Transformation3D and store result in result.
right and result transformation object can be the same.
void M3D_combineTranslationRight (Transformation3D *left, Translation3D *right, Transformation3D *result)
 Combine the specified left Transformation3D with right Translation3D and store result in result.
left and result transformation object can be the same.
void M3D_buildMat3D (Transformation3D *t)
 Build the transformation matrix of the specified Transformation3D object.
This also rebuild cached informations as inverse transformation matrix, inverse camera view...
void M3D_buildMat3DOnly (Transformation3D *t)
 Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild.
void M3D_buildMat3DExtras (Transformation3D *t)
 Only rebuild the cached infos as inverse matrix, inverse camera view...
void M3D_translate (Transformation3D *t, Vect3D_f16 *vertices, u16 numv)
 Process 3D translation only to specified 3D vertices buffer.
void M3D_rotate (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest, u16 numv)
 Process 3D rotation only to specified 3D vertices buffer.
void M3D_rotateInv (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest)
 Process 3D inverse rotation only to specified 3D vertex.
void M3D_transform (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest, u16 numv)
 Process 3D transform (rotation and translation) to specified 3D vertices buffer.
void M3D_project_f16 (const Vect3D_f16 *src, Vect2D_f16 *dest, u16 numv)
 Process 2D projection to specified 3D vertices buffer (fix16 version).
void M3D_project_s16 (const Vect3D_f16 *src, Vect2D_s16 *dest, u16 numv)
 Process 2D projection to specified 3D vertices buffer (s16 version).

Detailed Description

3D math engine.

Author:
Stephane Dallongeville
Date:
08/2011

This unit provides 3D transformation methods :

  • translation X, Y, Z
  • rotation X, Y, Z
  • one directionnal light
  • 2D projection

    Can transform (including 2D projection) about ~10000 vertices / seconde.

Function Documentation

void M3D_buildMat3D ( Transformation3D t)

Build the transformation matrix of the specified Transformation3D object.
This also rebuild cached informations as inverse transformation matrix, inverse camera view...

Parameters:
tTransformation3D object.
void M3D_buildMat3DExtras ( Transformation3D t)

Only rebuild the cached infos as inverse matrix, inverse camera view...

Parameters:
tTransformation object.
void M3D_buildMat3DOnly ( Transformation3D t)

Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild.

Parameters:
tTransformation object.
void M3D_combineTransform ( Transformation3D left,
Transformation3D right,
Transformation3D result 
)

Combine the specified right and left Transformation3D objects and store result in result. result cannot be the same transformation object as left or right.

Parameters:
leftLeft Transformation3D object.
rightRight Transformation3D object.
resultResult Transformation3D object.
void M3D_combineTranslationLeft ( Translation3D left,
Transformation3D right,
Transformation3D result 
)

Combine the specified left Translation3D and right Transformation3D and store result in result.
right and result transformation object can be the same.

Parameters:
leftLeft Transformation3D object.
rightRight Transformation3D object.
resultResult Transformation3D object.
void M3D_combineTranslationRight ( Transformation3D left,
Translation3D right,
Transformation3D result 
)

Combine the specified left Transformation3D with right Translation3D and store result in result.
left and result transformation object can be the same.

Parameters:
leftLeft Transformation3D object.
rightRight Translation3D object.
resultResult Transformation3D object.
void M3D_project_f16 ( const Vect3D_f16 src,
Vect2D_f16 dest,
u16  numv 
)

Process 2D projection to specified 3D vertices buffer (fix16 version).

Parameters:
srcSource 3D vertices buffer.
destDestination 2D vertices buffer - fix16 format
numvNumber of vertices to project.
void M3D_project_s16 ( const Vect3D_f16 src,
Vect2D_s16 dest,
u16  numv 
)

Process 2D projection to specified 3D vertices buffer (s16 version).

Parameters:
srcSource 3D vertices buffer.
destDestination 2D vertices buffer - s16 format
numvNumber of vertices to project.
void M3D_rotate ( Transformation3D t,
const Vect3D_f16 src,
Vect3D_f16 dest,
u16  numv 
)

Process 3D rotation only to specified 3D vertices buffer.

Parameters:
tTransformation object containing rotation parameter.
srcSource 3D vertices buffer.
destDestination 3D vertices buffer.
numvNumber of vertices to rotate.
void M3D_rotateInv ( Transformation3D t,
const Vect3D_f16 src,
Vect3D_f16 dest 
)

Process 3D inverse rotation only to specified 3D vertex.

Parameters:
tTransformation object containing rotation parameter.
srcSource 3D vertex.
destDestination 3D vertex.
void M3D_setCamDistance ( fix16  value)

Set camera scene distance.

Parameters:
valueDistance between the camera and the scene.
void M3D_setViewport ( u16  w,
u16  h 
)

Set viewport dimension.

Parameters:
wViewport width (use BMP_WIDTH if you use 3D with software bitmap engine)
hViewport height (use BMP_HEIGHT if you use 3D with software bitmap engine)
void M3D_transform ( Transformation3D t,
const Vect3D_f16 src,
Vect3D_f16 dest,
u16  numv 
)

Process 3D transform (rotation and translation) to specified 3D vertices buffer.

Parameters:
tTransformation object containing rotation and translation parameters.
srcSource 3D vertices buffer.
destDestination 3D vertices buffer.
numvNumber of vertices to transform.
void M3D_translate ( Transformation3D t,
Vect3D_f16 vertices,
u16  numv 
)

Process 3D translation only to specified 3D vertices buffer.

Parameters:
tTransformation object containing translation parameter.
vertices3D vertices buffer to translate.
numvNumber of vertices to translate.
 All Classes Files Functions Variables Typedefs Enumerations Defines